package com.litidea.dao;

import java.util.List;
import java.util.Map;

import com.litidea.dataobjects.ChangeTypeTestItemsDO;

import net.sf.json.JSONObject;

public interface InternalChangeDAO {
	/**
	 * 获取内部变更分页列表
	 * @param params
	 * @return
	 */
	public JSONObject getInternalChangePageList(Map<String, String> params);
	
	/**
	 * 添加新的内部变更
	 * @param params
	 * @return
	 */
	public Integer addNewInternalChange(Map<String, String> params);
	
	/**
	 * 从外部变更添加新的内部变更
	 * @param params
	 * @return
	 */
	public Integer createNewInternalChange(Map<String, String> params);
	
	/**
	 * 编辑内部变更
	 * @param params
	 * @return
	 */
	public String editInternalChange(Map<String, String> params);
	
	/**
	 * 删除内部变更
	 * @param params
	 * @return
	 */
	public String deleteInternalChange(Integer id);
	
	/**
	 * 批准内部变更
	 * @param params
	 * @return
	 */
	public String approveInternalChange(Map<String, String> params);
	
	/**
	 * 拒绝内部变更
	 * @param params
	 * @return
	 */
	public String rejectInternalChange(Map<String, String> params);
	
	/**
	 * 设置验证组
	 * @param params
	 * @return
	 */
	public String setVerifyTeam(Map<String, String> params);
	
	/**
	 * 判定变更类别和阶段
	 * @param params
	 * @return
	 */
	public String setChangeType(Map<String, String> params);
	
	/**
	 * 获取变更验证计划项目
	 * @param changeId
	 * @return
	 */
	public List<ChangeTypeTestItemsDO> getTestItemssByChangeId(Integer id);
	
	/**
	 * 更新是否必须
	 * @param params
	 */
	public void updateIsMust(Map<String, String> params);
	
	/**
	 * 提交变更测试计划
	 * @param params
	 */
	public void submitForTestPlanApproval(Map<String, String> params);
	
	/**
	 * 批准变更测试计划
	 * @param params
	 */
	public void approveTestPlan(Map<String, String> params);
	
	/**
	 * 拒绝变更测试计划
	 * @param params
	 */
	public void rejectTestPlan(Map<String, String> params);
	
	/**
	 * 保存变更评审
	 * @param params
	 * @return
	 */
	public String saveChangeEvaluation(Map<String, String> params);
	
	/**
	 * 上传测试报告
	 * @param params
	 * @return
	 */
	public String uploadResultReport(Map<String, String> params);
	
	/**
	 * 结束上传报告转入下一环节
	 * @param params
	 * @return
	 */
	public String finishUploadReport(Map<String, String> params);
	
	/**
	 * 通报客户和供应商
	 * @param params
	 * @return
	 */
	public String alertCustomerAndSupplier(Map<String, String> params);
	
	/**
	 * 保存变更通知
	 * @param params
	 * @return
	 */
	public String saveChangeNotification(Map<String, String> params);
	
	/**
	 * 选择下发部门和人员
	 * @param params
	 * @return
	 */
	public String selectDeployDeptUsers(Map<String, String> params);
	
	/**
	 * 执行变更
	 * @param params
	 * @return
	 */
	public String deployChange(Map<String, String> params);
	
	/**
	 *  结束流程
	 * @param params
	 * @return
	 */
	public String finished(Map<String, String> params);
}
